From: Sebastian Keller Date: Sat, 11 Apr 2026 13:02:12 +0000 (+0200) Subject: environment: Disconnect from transitions when stopped X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~10^2^2~64 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=7c7d62510fbf46e94fcc54be152ff163a2808e87;p=gnome-shell.git environment: Disconnect from transitions when stopped Transitions don't emit a 'destroy' signal which would be used by the SignalTracker to automatically clean up, leading to all transitions being leaked until session shutdown. Avoid this by manually disconnecting them when stopped. Fixes: 240aa910d ("environment: Ignore animation events after shutdown") Part-of: --- diff --git a/js/ui/environment.js b/js/ui/environment.js index 2e5baa97e..45dafa9a7 100644 --- a/js/ui/environment.js +++ b/js/ui/environment.js @@ -182,8 +182,10 @@ function _easeActor(actor, params) { } if (transition) { - transition.connectObject('stopped', (t, finished) => callback(finished), - sessionSignalHolder); + transition.connectObject('stopped', (t, finished) => { + transition.disconnectObject(sessionSignalHolder); + callback(finished); + }, sessionSignalHolder); } else { callback(true); } @@ -271,8 +273,10 @@ function _easeAnimatableProperty(animatable, propName, target, params) { prepare(); } - transition.connectObject('stopped', - (t, finished) => callback(finished), sessionSignalHolder); + transition.connectObject('stopped', (t, finished) => { + transition.disconnectObject(sessionSignalHolder); + callback(finished); + }, sessionSignalHolder); return promise; }